package CompteBancaire;

import _Banque.CompteBancaire;
import _Banque.Titulaire;
import _Banque._Banque;
import _Banque.interfaces.IBanque;
import _Tests.Tests;

//
// IUT de Nice / Departement informatique / Module APO-C++
// Annee 2008_2009 - Package _Banque
//
// Classe CompteBancaire - Tests unitaires de la methode dateDerniereOperation
//                         (Cas nominaux)
//
// Auteur : A. Thuaire
//
public class T_CompteBancaire_N3_2 implements IBanque {
	
	public static void main(String[] args) throws Throwable
	{
	   Tests.Begin("_Banque.CompteBancaire", "1.2.0");

	   String adresse_1 = "Imm. Les Magnolias Bat. 2, 8 Bd Napoleon III - NICE (06000)";
	   String adresse_2 = "Villa Beau Sejour, 115 Av. de la Grande Armee - PARIS (75000)";

	   Titulaire dupuy = new Titulaire("DUPUY", "melanie", "1978/04/25", adresse_1);
	   Titulaire durand = new Titulaire("Durand", "Paul", "1981/01/03",  adresse_2);
	 
	      Tests.Design("Controle de la methode dateDerniereOperation", 3);

	         Tests.Case("Cas d'un seule operation"); {     
	         CompteBancaire cpt = new CompteBancaire(dupuy);

	            cpt.executer(VERSEMENT, "Guichet 322455", 200);  
			 
	            Tests.Unit(200.0f,  cpt.getSoldeCompte());
	            Tests.Unit(_Banque.dateCourante(), cpt.getDateDerniereOperation());
	         } 
			 
	         Tests.Case("Cas de plusieurs operations"); {     
	         CompteBancaire cpt_1 = new CompteBancaire(dupuy);
	         CompteBancaire cpt_2 = new CompteBancaire(durand);

	            cpt_1.executer(VERSEMENT, "Guichet 322455", 200);  
	            cpt_1.executer(VERSEMENT, "Guichet 322455", 320.5f);  
	            cpt_1.executer(RETRAIT, "Facture 2009-29", 400);  
	            cpt_1.executer(VERSEMENT, "Guichet 322455", 100);  
			 
	            Tests.Unit(_Banque.dateCourante(), cpt_1.getDateDerniereOperation());

	            cpt_2.executer(VERSEMENT, "Guichet 760999", 350); 
	            cpt_2.executer(RETRAIT, "Facture 2009-04", 300);

	            Tests.Unit(_Banque.dateCourante(), cpt_2.getDateDerniereOperation());
	         } 

	   Tests.End();
	}
}
